package cn.xeblog.plugin.enums;

import cn.xeblog.plugin.mode.ModeContext;
import com.intellij.ui.JBColor;

import javax.swing.text.MutableAttributeSet;
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
import java.awt.*;

/**
 * 样式枚举
 *
 * @author anlingyi
 * @date 2020/8/21
 */
public enum Style {
  /**
   * 默认样式
   */
  DEFAULT,
  /**
   * 用户昵称样式
   */
  USER_NAME {
    @Override
    protected void init() {
      super.init();
      StyleConstants.setBold(style, true);
    }
  },
  /**
   * 系统消息样式
   */
  SYSTEM_MSG {
    @Override
    protected void init() {
      super.init();
      // 设置前景色并加粗
      StyleConstants.setForeground(style, new Color(232, 81, 88));
      StyleConstants.setBold(style, true);
    }
  },
  /**
   * 警告样式
   */
  WARN {
    @Override
    protected void init() {
      super.init();
      // 设置前景色
      StyleConstants.setForeground(style, new Color(232, 81, 88));
    }
  },
  /**
   * 浅红色样式
   */
  LIGHT {
    @Override
    protected void init() {
      super.init();
      // 设置前景色
      StyleConstants.setForeground(style, new Color(241, 135, 135));
    }
  },
  /**
   * 粗体样式
   */
  BOLD {
    @Override
    protected void init() {
      super.init();
      // 加粗
      StyleConstants.setBold(style, true);
    }
  };

  /**
   * 样式
   */
  protected MutableAttributeSet style;

  /**
   * 初始化
   */
  protected void init() {
    // 设置前景色
    style = new SimpleAttributeSet();
    StyleConstants.setForeground(style, JBColor.foreground());
  }

  /**
   * 获取样式
   */
  public MutableAttributeSet get() {
    ModeContext.getMode().handleStyle(style);
    return style;
  }

  /**
   * 忽略模式，获取样式
   */
  public MutableAttributeSet getByIgnoreMode() {
    return style;
  }

  /**
   * 初始化样式
   */
  public static void initStyle() {
    for (Style style : values()) {
      style.init();
    }
  }
}
